2016/08/07

[Data Analytics] 評估資料模型的常用方法




資料科學的工作,有一部份是用資料建立數學模型,然後用建立好的模型來對未來作預測。然而一個數學模型到底建得好不好,應該要怎麼評估呢?Laetitia Van Cauwenberge 的這篇 "11 Important Model Evaluation Techniques Everyone Should Know" 是不錯的簡介,以下是她所提到的 11 個方法,我稍微調整了一下順序:
  1. Root Mean Square Error (RSME).
  2. L^1 version of RSME.   
  3. Confidence Interval.
  4. Kolmogorov-Smirnov Chart
  5. Chi Square
  6. ROC curve
  7. Gini Coefficient.  
  8. Confusion Matrix.
  9. Gain and Lift Chart.
  10. Cross Validation
  11. Predictive Powe
這11個項目涵蓋了統計學(statistics)、資料探勘(data mining)和機器學習(machine learning)領域絕大多數「評估」的方法,原文對各項的介紹相當清楚,但嚴格說來這些方法屬於幾種不同層次的概念,彼此之間倒也不是互相獨立,而是可以混搭使用的。我從個人的觀點簡單的摘要一下。

從概念的複雜度來看,Root Mean Square ErrorL^1 version of RSME 屬於最基本的數值型指標,用來表示兩組數據之間的差異性,如果這兩組數值是「模型的預測」和「標準答案」,這類數值指標就可以很直觀的表示「這個模型有多好」。而 L^1 version of RSME 屬於比較新的概念,基本上是修改 Root Mean Square Error 以使其更適合非數值的資料型態。

ROC curveConfusion Matrix 屬於上述數值型指標的特殊呈現方式。RSME 描述的是兩組數據的差異,但是當這兩組數據是二元資料(0 或1)或類別資料(0, 1, 2, ...N)時,就常常會用 ROC Curve 或 Confusion Matrix 來表示。這樣的呈現方式讓我們可以很快的看出模型在預測上的表現,並根據決策者的風險偏好來選擇適合的模型。而 Gini CoefficientROC curve 的延伸指標,把一張圖的主要特徵轉換成一個簡單的數字。

在一般統計課程的「推論統計」部分,應該都會學到 Confidence IntervalChi Square,和 Kolmogorov-Smirnov Test 等概念。由於導入了「機率分布」的概念,這些方法比基本數值稍微複雜一些,但可以提供類似「我對這個模型有 xx% 的信心」這樣的參考,所以在決策或風險管理的過程中,比簡單的數值更有意義一些。

Gain and Lift 是從行銷和資料探勘領域提出的概念,用「投入資源得到的效益」來評估一個模型的預測能力,據以決定行銷活動的規模。這個方法在其他領域的應用比較少見。

Cross Validation 則是更抽象一層的概念。無論你用前面敘述的哪一種方法來評估一個模型,都會面臨一個問題:「我的評估有多可靠?」一般的模型評估,我們會把手上的資料分成「訓練組」(training data)和「測試組」(testing data),用前者來建立模型,然後用後者來評估模型的表現。然而,我們切分資料的方法,是不是讓切分的資料像的外面真實世界一樣,還是變得有所偏頗?這是很難回答的問題,Cross Validation 則提供了至少在數學上合理的方式:把整組資料反覆切分若干次,然後把每次的表現指標整合起來看,以防止資料切分造成的偏頗。類似的 resampling 方法還有很多,例如 bootstraping

最後一項 Predictive Power,是資料科學的主要推手之一,Vincent Granville 前幾年提出來的方法,主要是在大數據的環境下實作快速 feature selection 的方法。Feature selection 是資料科學裡蠻重要的一環:我們有很多的資料、很多的變項,然而什麼樣的組合,對預測我們關心的問題,是最有效的?這跟 Cross Validation 試圖回答的問題一樣抽象,很可能是沒有答案的,而學術上提出的方法很多,也很難證明哪一種是最好的。幸好站在實務的角度來看,能在有限的資源下能給我夠好的答案即可,而這個 Predictive Power 看來也是個務實的解決方案。

以我個人的實務經驗來說,最常用的評估方法是 10-fold cross-validation + confusion matrix,然後根據結果再進一步做 feature selection。當然這是由於我較常解決問題的形式屬於透過 classification 跟 clustering 來做決策,如果是做單純的數值預測,cross-validation + RSME 或許就已經是夠好的指標了。


沒有留言: